<?php
/**
 * Created by PhpStorm.
 * User: yuanxr
 * Date: 2018/6/10
 * Time: 上午8:32
 */

namespace Utility\Data;
use Utility\Extend\EArray;
use \Exception;
/**********************************************************************************************************************
 * /mysql：trsql和ansql的适配器类，用于统一操作mysql数据库和阿里云分析型数据库
 **********************************************************************************************************************/
class Mysql
{
    //设置实例化
    private $_EArray;
    private $_Asql;
    private $_Tsql;

    function __construct() {
        $this->_EArray = new EArray();
        $this->_Asql = new Asql();
        $this->_Tsql = new Tsql();
    }

	/**
	 * query
	 *
	 * @param array $db 数据库数组
	 * @param string||array $sqls 单条sql语句，或sql语句数组
	 * @param array $params 查询mysql时与sql语句配合的参数
	 * @return array 读取到数据，则返回数据数组。否则返回null
	 */
	public function query(array $db, $sqls, $params = null) {
		return $this->_EArray->hasKey($db, 'database') ? $this->_Asql->query($db, $sqls, $params) : $this->_Tsql->query($db, $sqls, $params);
	}

	/**
	 * write
	 *
	 * @param array $db 数据库数组
	 * @param string||array $sqls 单条sql语句，或sql语句数组
	 * @param array $params 查询mysql时与sql语句配合的参数
	 * @return boolean 成功返回true，失败返回false
	 */
	public function write(array $db, $sqls, $params = null) {
		return $this->_EArray->hasKey($db, 'database') ? $this->_Asql->write($db, $sqls, $params) : $this->_Tsql->write($db, $sqls, $params);
	}

	/**
	 * lastid
	 *
	 * @param array $db 数据库数组
	 * @param string $sql 单条sql语句
	 * @param array $params 与sql配合的params参数的值
	 * @return int 成功则返回被插入数据的id号
	 */
	public function lastid(array $db, string $sql, $params = null){
		if ($this->_EArray->hasKey($db, 'database')) {
            try {
                throw new Exception('lastid方法，仅允许传入事务型数据库连接配置数组！');
            } catch(Exception $ex) {
                return $ex->getMessage();
            }
		}
		return $this->_Tsql->lastid($db, $sql, $params);
	}

}
